#pragma once
#include "libbase/common.h"
namespace wmj
{
/**
 * @brief 推理后端基类
 * 
 */
class InferenceBackendBase
    {
    public:
        virtual bool doInference(const cv::Mat &inputImg) = 0;
        virtual const float* getOutput() = 0;
        enum BackendType{TRT,OV,ONNX,NONE} type_;
        cv::Size2i getInputSize()
        {
            return cv::Size2i(input_width, input_height);
        }
        bool operator()(const cv::Mat &inputImg)
        {
            return doInference(inputImg);
        }
        float* m_prob;
        int maxProposalCount;          // 模型输出通道数
        int objectLength;              // 模型输出单位长度
        int numberOfClass;             // 模型输出类别数
        int input_height;              // 模型输入图像高
        int input_width;               // 模型输入图像宽
        int batch_size;
    };
}